package model;

import java.io.Serializable;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

@Entity
@NamedQueries( { @NamedQuery(name = "Personal.findAll", query = "select o from Personal o") })
public class Personal implements Serializable {
    @Column(nullable = false, length = 30)
    private String apellido;
    @Column(nullable = false, length = 20)
    private String cargo;
    @Column(nullable = false, length = 30)
    private String nombre;
    @Id
    @Column(nullable = false, length = 10)
    private String rut;
    @OneToMany(mappedBy = "personal")
    private List<JefeTaller> jefeTallerList;
    @OneToMany(mappedBy = "personal1")
    private List<Conductor> conductorList;
    @OneToMany(mappedBy = "personal2")
    private List<Especialista> especialistaList;
    @OneToMany(mappedBy = "personal3")
    private List<JefeOperaciones> jefeOperacionesList;

    public Personal() {
    }

    public Personal(String apellido, String cargo, String nombre, String rut) {
        this.apellido = apellido;
        this.cargo = cargo;
        this.nombre = nombre;
        this.rut = rut;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getRut() {
        return rut;
    }

    public void setRut(String rut) {
        this.rut = rut;
    }

    public List<JefeTaller> getJefeTallerList() {
        return jefeTallerList;
    }

    public void setJefeTallerList(List<JefeTaller> jefeTallerList) {
        this.jefeTallerList = jefeTallerList;
    }

    public JefeTaller addJefeTaller(JefeTaller jefeTaller) {
        getJefeTallerList().add(jefeTaller);
        jefeTaller.setPersonal(this);
        return jefeTaller;
    }

    public JefeTaller removeJefeTaller(JefeTaller jefeTaller) {
        getJefeTallerList().remove(jefeTaller);
        jefeTaller.setPersonal(null);
        return jefeTaller;
    }

    public List<Conductor> getConductorList() {
        return conductorList;
    }

    public void setConductorList(List<Conductor> conductorList) {
        this.conductorList = conductorList;
    }

    public Conductor addConductor(Conductor conductor) {
        getConductorList().add(conductor);
        conductor.setPersonal1(this);
        return conductor;
    }

    public Conductor removeConductor(Conductor conductor) {
        getConductorList().remove(conductor);
        conductor.setPersonal1(null);
        return conductor;
    }

    public List<Especialista> getEspecialistaList() {
        return especialistaList;
    }

    public void setEspecialistaList(List<Especialista> especialistaList) {
        this.especialistaList = especialistaList;
    }

    public Especialista addEspecialista(Especialista especialista) {
        getEspecialistaList().add(especialista);
        especialista.setPersonal2(this);
        return especialista;
    }

    public Especialista removeEspecialista(Especialista especialista) {
        getEspecialistaList().remove(especialista);
        especialista.setPersonal2(null);
        return especialista;
    }

    public List<JefeOperaciones> getJefeOperacionesList() {
        return jefeOperacionesList;
    }

    public void setJefeOperacionesList(List<JefeOperaciones> jefeOperacionesList) {
        this.jefeOperacionesList = jefeOperacionesList;
    }

    public JefeOperaciones addJefeOperaciones(JefeOperaciones jefeOperaciones) {
        getJefeOperacionesList().add(jefeOperaciones);
        jefeOperaciones.setPersonal3(this);
        return jefeOperaciones;
    }

    public JefeOperaciones removeJefeOperaciones(JefeOperaciones jefeOperaciones) {
        getJefeOperacionesList().remove(jefeOperaciones);
        jefeOperaciones.setPersonal3(null);
        return jefeOperaciones;
    }
}
